When you have to produce a given diagram of vertices and arrows,
you must clearly choose adequately the position of each vertex so
that all the arrows will be in one of the sixteen directions
considered by the Diagram Macros. Anybody who has read this user's guide
will easily produce an example of a diagram where this requirement
cannot be fulfilled. Nevertheless such a situation is rather
unusual since, for example, the most popular book on category
theory (Saunders MAC LANE – Categories for the working
mathematician – Springer,1971) ...does not contain any such
diagram! [Well, I have been lucky: Saunders did not draw the
connecting morphism in the snake lemma!]
The slope of an arrow is a pair (n, m) of integers: when you
move n points left, you move m points up; as usual, a
negative value of n or m indicates a movement in the
opposite direction. For example, here are the slopes of the various
diagram arrows:
- The primary arrows have slope (±1, 0) [horizontal arrows]
or (0,±1) [vertical arrows];
- The secondary arrows have slope
(±1,±1);
- The ternary arrows have slope
(±1,±2) or
(±2,±1)
according to the case.
In fact, LATEXallows you to draw arrows in thirty two other
directions, using the picture environment and the commands
++ and ++; the corresponding available slopes are
(±1,±3),
(±3,±1),
(±1,±4),
(±4,±1),
(±2,±3),
(±3,±2),
(±3,±4),
(±4,±3).
The length of an arrow is always specified by giving the horizontal
extent of the arrow, except in the case of vertical arrows where
the actual length is given. So you can just design any arrow or set
of arrows using the picture environment and choose the corresponding
picture as an item of your diagram; the center of your picture will
be positioned automatically at the corresponding point of the
pattern. This is exactly what the Diagram Macros are doing any time you
ask them to draw an arrow.
You can avoid some typing (but just that!), by using the ``free slope
arrow Macro'' to produce directly a diagram arrow, like for
primary, secondary and ternary arrows. It has the following form
where, as a matter of convention, the origin of the coordinates is
the point of the pattern at which you want to include the free slope
arrow:
+nabxyuvl+
where
- +n+ is the name of the arrow;
- +(a,b)+ are the coordinates (in points) of the place where
you want the lower left corner of that name to be positioned;
- +(x,y)+ are the coordinates of the origin of the arrow;
- +(u,v)+ is the slope of the arrow (it must be one of the
slopes just indicated);
- +l+ is the horizontal extent (in points) of the arrow, or
its length in the case of a vertical arrow.
If you do not want to name the arrow, just type, following the
usual Diagram Macros convention:
+xyuvl+
Clearly, the ``free slope arrow'' option is not a Diagram Macros
feature: it is just plain LATEX job.